package com.zhiyou100.api.date_demo;

import java.util.Calendar;

public class Demo5 {

    public static void main(String[] args) {
        showCalendar(2022, 5);
    }

    /**
     * 根据用户输入的年以及月在控制台输出当月日历
     * calendar中月是从0----11   我们的习惯是1 - 12
     */
    public static void showCalendar(int year, int month) {

        if (year > 0 && (month >= 1 && month <= 12)) {
            Calendar calendar = Calendar.getInstance();
            //设置当前日期为用户指定的年 月 1日
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, month - 1);
            calendar.set(Calendar.DATE, 1);
            //获取1号是周几  默认从周日开始1.....
            int week = calendar.get(Calendar.DAY_OF_WEEK);
            System.out.println("week = " + week);
            //获取当月多少天
            int total_day = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            System.out.println("一\t二\t三\t四\t五\t六\t日");
            //循环输出当月日历    周一 - 周六  2 - 7    日历前空几格   周几数字 - 2
            int j = 1; //默认j是几号
            if (week >= 2 && week <= 7) {
                //循环的总天数是当月天数 + 1号之前的空格
                for (int i = 0; i < total_day + week - 2; i++) {
                    if (i < week - 2) {
                        //输出1号之前的空格
                        System.out.print("\t");
                    } else {
                        //开始输出当月的日历
                        System.out.print(j + "\t");
                        //每循环一周换一行
                        if ((i + 1) % 7 == 0) {
                            System.out.println();
                        }
                        //每打印一个日期让j++，变成下个日期
                        j++;
                    }
                }
            }else {
                //1号是周日
                for (int i = 0; i < total_day + 6; i++) {
                    if (i < 6) {
                        //输出1号之前的空格
                        System.out.print("\t");
                    } else {
                        //开始输出当月的日历
                        System.out.print(j + "\t");
                        //每循环一周换一行
                        if ((i + 1) % 7 == 0) {
                            System.out.println();
                        }
                        //每打印一个日期让j++，变成下个日期
                        j++;
                    }
                }
            }
        } else {
            System.out.println("输入的数据不在有效范围内");
        }
    }
}
